Mobile telephones are used throughout the world, and can offer a user a variety of services. A mobile telephone is identified by an E.164 number, which is a unique identifier that has a predetermined format; typically it starts with a number code to identify the country in which the mobile telephone is registered, and also includes a number code to identify the geographic region within the country in the case of land lines, or the mobile service provider in the case of mobile telephones. The remaining numbers identify the mobile telephone uniquely within that country and service provider or geographical area.
All mobile telephones support circuit switched (CS) voice calls and Short Message Service (SMS) messaging for sending text messages. Sometimes services may go beyond that of traditional telephony, but even so telephony is used as a means to set up a communication session between two mobile telephones even where the communication session is not a voice call or SMS message.
An example of such a scheme is where an initial service discovery in order to determine whether the receiver has the capabilities of receiving such a communication session is initially done using a traditional telephony call. The receiver's E.164 number is used to contact the receiver, and once the capabilities of the receiver have been established, the communication session can begin. The communication session need not use the E.164 number, but could instead use, for example, an Instant Messaging address.
A similar approach is used for so-called combinational services (CSI). CSI has a mode in which a normal CS telephony call using an E.164 number secures a voice communication between two devices such as mobile telephones, and a separate but associated IP Multimedia Services (IMS) session is routed via IP to add functionality such as video.
The above two examples illustrate that a CS telephone call using an E.164 number can be used to initiate a more advanced packet switched (PS) communication service.
Distributed Shared Memory (DSM), also known as Distributed Global Address Space (DGAS) is a concept in which two or more devices, such as mobile telephones or personal computers, have access to a shared memory. A DSM is a distributed global addressable memory space where each memory space in the DSM is assigned a unique address. By knowing this address, it is possible to get a copy or reference to that memory. By giving both devices the location of the memory space, each device can access the shared memory and make changes to it.
One way to implement a DSM is to provide a centralized solution where the DSM resides on an external server. A drawback to this approach is that whenever a device wishes to write to the DSM, it must acquire a “lock” to the server before making any changes in order to prevent the memory to become corrupted. This means that only one device at a time can update the memory and all other devices must wait until the first device has finished its operations, thus making it unsuitable for implementing collaborative services.
Another approach to implementing a DSM is to let allow each client device to acquire a local copy or replica of the DSM, and then synchronize the DSM in the background. Any modification to a particular DSM is synchronized so that every replica converges to the same state after some time. This is known as eventual consistency as the DSM and the replicas stored at each device only become consistent after a period of time.
Some DSM systems use Operational Transformation (OT) to provide eventual consistency. This allows client devices to use a DSM replica instance locally and then synchronize changes to the DSM master instance in the background. Any operation (such as get, add, delete and clear) on a DSM replica instance is applied immediately without being delayed, as would be the case for a centralized solution in which a server request and response would be required. This makes it possible to implement responsive user interfaces without having to wait for the client device to obtain a lock on the central DSM.
OT is used to resolve merge conflicts that might occur if multiple devices or applications update the same memory at the same time. It allows each application to be completely unaware of other applications or devices. Each device acquires a DSM replica instance, which can be used to store and receive information without having to deal with synchronization issues or use some network signalling protocols to set up a session. Applications can also use a DSM without it having to be fully initialized and replicated. Any updates to the DSM are merged during the replication process.
A DSM can be used to store any kind of information. For example, a shared notes application is used to store text entered by the user. A shared map application stores a link to a map as well as coordinates and zoom settings for the current map view.
Below is an example of pseudo code illustrating how a DSM can be used to implement a shared Google Map application. When a user moves the map, the following code is triggered which will store the current position in the DSM.
var hash = dsmServer.get(“7126362,7612711”); // get a replicahash.set(“pos”,{“lat”:45.47371747815213,“lng”:32.49429836273188});hash.submit( ); // send operations to other clients
Other client devices or applications that are also running the shared Google Map application will have their replicas updated when another client device or application changes a value stored in the DSM.
map = new google.maps.Map(...);var hash = dsmServer.get(“7126362,7612711”); // get a replicahash.onRemoteUpdate(op) { if (op.type==Operation.SET && op.key==“pos”) { var tmp = JSON.parse(op.value); var ltlg = new google.maps.LatLng(tmp.lat, tmp.lng); map.setCenter(ltlg); }}
Client devices can respond to changes in the DSM, for example a change to the current position of the Google Map, using the pseudo code above.
A shared map is only one example how a DSM can be used to implement a collaborative service. Other examples include shared notes, a remote telepointer, or a shared whiteboard. A DSM can be used to implement the sharing of any functions relating to PS data such as information available on a web page.
As described above, it is known to add PS functionality to a CS call using a separate session, and to use the CS call as a way of initializing the separate session. However, this relies on predefined content of the communication session such as voice, video, images. There is no support for a more dynamic interactivity such as shared whiteboards or shared notes.
Shared whiteboards, and screen sharing in general, can be found in PS applications but so far, no service exists today which combines an evolved CS call (such as CSI and Facetime) with interactive applications as described above.